import axios from "axios";
import store from "../store"
// 创建一个axios实例对象
const instance = axios.create({
    baseURL: "/api",
    timeout: 5000
})
// 请求拦截器
instance.interceptors.request.use(config => {
    // 什么时候执行这个函数？  在请求发出去之前执行
    // config是什么？  是一个对象，关于本次请求信息的对象
    // 这个函数可以用来做什么？  添加请求头(发送请求前的准备工作)

    // 添加请求头，每一次发送请求，都携带token
    let token = localStorage.getItem("x-auth-token")
    if (token) {
        config.headers["x-auth-token"] = token;
    }
    // console.log("请求拦截器中的代码", config);
    return config
}, err => {
    return Promise.reject(err)
})

// 响应拦截器
instance.interceptors.response.use(res => {
    // 什么时候执行这个函数？    在接收到响应之后，数据进入组件之前执行
    // res是一个axios封装好的一个响应对象， 里面包含有后端给我们的数据
    // 这个函数可以用来做什么？   可以对响应回来的数据进行统一处理
    let ret = res.data;

    // store._actions["toastStatus/asyncChanIsShowToast"][0]({
    //     msg: "我们只是测试一下",
    //     type: "danger",
    // });
    if (ret.code != 0) {
        // 提示
        store._actions["toastStatus/asyncChanIsShowToast"][0]({
            msg: ret.message,
            type: "danger",
        });
    }

    return ret   // 这里的数据return到 请求回调中的then中的res，被res接收
}, err => {
    return Promise.reject(err)
})

export default instance